import { IPSDELogicBase } from './ipsdelogic-base';
import { IPSDEMSLogicNode } from './ipsdemslogic-node';
import { IPSDEMSLogicParam } from './ipsdemslogic-param';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEMSLogic
 */
export interface IPSDEMSLogic extends IPSDELogicBase {
  /**
   * 主状态逻辑节点集合
   *
   * @type {IPSDEMSLogicNode[]}
   */
  getPSDEMSLogicNodes(): IPSDEMSLogicNode[] | null;

  /**
   * 主状态逻辑节点集合
   *
   * @type {IPSDEMSLogicNode[]}
   */
  get psDEMSLogicNodes(): IPSDEMSLogicNode[] | null;

  findPSDEMSLogicNode(objKey: any): IPSDEMSLogicNode | null;

  /**
   * 主状态逻辑参数集合
   *
   * @type {IPSDEMSLogicParam[]}
   */
  getPSDEMSLogicParams(): IPSDEMSLogicParam[] | null;

  /**
   * 主状态逻辑参数集合
   *
   * @type {IPSDEMSLogicParam[]}
   */
  get psDEMSLogicParams(): IPSDEMSLogicParam[] | null;

  findPSDEMSLogicParam(objKey: any): IPSDEMSLogicParam | null;

  /**
   * 开始处理节点
   *
   * @type {IPSDEMSLogicNode}
   */
  getStartPSDEMSLogicNode(): IPSDEMSLogicNode | null;

  /**
   * 开始处理节点
   *
   * @type {IPSDEMSLogicNode}
   */
  get startPSDEMSLogicNode(): IPSDEMSLogicNode | null;

  /**
   * 开始处理节点（必须存在）
   *
   * @type {IPSDEMSLogicNode}
   */
  getStartPSDEMSLogicNodeMust(): IPSDEMSLogicNode;

  /**
   * 默认主状态切换逻辑
   * @type {boolean}
   */
  defaultMode: boolean;
}
